A distributed computing system includes a number of computing nodes that are often executed across multiple computing devices. The computing nodes perform computing tasks that often require manipulating shared resources, such as shared data storage resources. When multiple computing nodes access shared resources, however, it is important to maintain the integrity of the shared resources.